/**
 * Ark Statistics Configuration
 */
export type ArkStatCfg = {
    Node: {
        enableTypeWhiteList: boolean,
        typeWhiteList: string[],
        enableTypeBlackList: boolean,
        typeBlackList: string[],
        enableNameWhiteList: boolean,
        nameWhiteList: string[],
        enableNameBlackList: boolean,
        nameBlackList: string[],
        enableId: boolean,
        enableType: boolean,
        enableName: boolean,
        enableSelfSize: boolean,
        enableRetainedSize: boolean,
    },
    Path: {
        enableDistance: boolean,
        enableSelfSize: boolean,
        enableRetainedSize: boolean,
        enableNativeSize: boolean,
        enableShortest: boolean,
        enableShortestLength: boolean,
        shortestLength: number,
        enableAggration: boolean,
        aggrationLength: number,
        aggrationDescending: boolean,
        enableMinRetainedSize: boolean,
        minRetainedSize: number,
        enableMaxRetainedSize: boolean,
        maxRetainedSize: number,
    }
}

/**
 * Ark Statistics default configuration
 * @returns default configuration
 */
export function defaultArkStatCfg() : ArkStatCfg {
    return {
        Node: {
            enableTypeWhiteList: true,
            typeWhiteList: ["object", "closure", "string", "array"],
            enableTypeBlackList: false,
            typeBlackList: [],
            enableNameWhiteList: false,
            nameWhiteList: [],
            enableNameBlackList: false,
            nameBlackList: [],
            enableId: true,
            enableType: true,
            enableName: true,
            enableSelfSize: false,
            enableRetainedSize: false,
        },
        Path: {
            enableDistance: true,
            enableSelfSize: true,
            enableRetainedSize: true,
            enableNativeSize: false,
            enableShortest: true,
            enableShortestLength: false,
            shortestLength: 0,
            enableAggration: true,
            aggrationLength: 3,
            aggrationDescending: true,
            enableMinRetainedSize: true,
            minRetainedSize: 1024 * 1024,  // 1MB
            enableMaxRetainedSize: false,
            maxRetainedSize: 0,
        },

    }
}